﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Indicadores
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Indicadores()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Indicadores(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public DataSet _retorna_Indicadores(
                                                string CTM_INDICADOR_ID,
                                                string PAIS_ID,
                                                string ESTADO_ID,
                                                string IND_IATA,
                                                string IND_DESCRICAO_LONGA,
                                                string IND_PISTA,
                                                string IND_LATIDUDE,
                                                string IND_LONGITUDE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_INDICADOR_ID)) CTM_INDICADOR_ID = "0";
            if (string.IsNullOrEmpty(PAIS_ID)) PAIS_ID = "0";
            if (string.IsNullOrEmpty(ESTADO_ID)) ESTADO_ID = "0";
            if (string.IsNullOrEmpty(IND_IATA)) IND_IATA = "''";
            if (string.IsNullOrEmpty(IND_DESCRICAO_LONGA)) IND_DESCRICAO_LONGA = "''";
            if (string.IsNullOrEmpty(IND_PISTA)) IND_PISTA = "''";
            if (string.IsNullOrEmpty(IND_LATIDUDE)) IND_LATIDUDE = "0";
            if (string.IsNullOrEmpty(IND_LONGITUDE)) IND_LONGITUDE = "0";

            string sql = "SELECT " +
                                  "CTM_INDICADOR.CTM_INDICADOR_ID, " +
                                  "CTM_INDICADOR.PAIS_ID, " +
                                  "CTM_INDICADOR.ESTADO_ID, " +
                                  "CTM_INDICADOR.IND_IATA, " +
                                  "CTM_INDICADOR.IND_DESCRICAO_LONGA, " +
                                  "CTM_INDICADOR.IND_PISTA, " +
                                  "CTM_INDICADOR.IND_LATIDUDE, " +
                                  "CTM_INDICADOR.IND_LONGITUDE " +
                            "FROM CTM_INDICADOR " +
                            "LEFT JOIN ESTADO ON ESTADO.ESTADO_ID = CTM_INDICADOR.ESTADO_ID " +
                            "LEFT JOIN PAIS ON PAIS.PAIS_ID = CTM_INDICADOR.PAIS_ID " +
                            "WHERE " +
                            "      (CTM_INDICADOR.CTM_INDICADOR_ID                 = " + CTM_INDICADOR_ID + "  OR " + CTM_INDICADOR_ID + " = '0') AND " +
                            "      (CTM_INDICADOR.PAIS_ID                         = " + PAIS_ID + "  OR " + PAIS_ID + " = '0') AND " +
                            "      (CTM_INDICADOR.ESTADO_ID                       = " + ESTADO_ID + "  OR " + ESTADO_ID + " = '0') AND " +
                            "      (CTM_INDICADOR.IND_IATA                   = " + IND_IATA + "  OR " + IND_IATA + " = '') AND " +
                            "      (CTM_INDICADOR.IND_DESCRICAO_LONGA             = " + IND_DESCRICAO_LONGA + "  OR " + IND_DESCRICAO_LONGA + " = '') AND " +
                            "      (CTM_INDICADOR.IND_PISTA                       = " + IND_PISTA + "  OR " + IND_PISTA + " = '') AND " +
                            "      (CTM_INDICADOR.IND_LATIDUDE                    = " + IND_LATIDUDE + "  OR " + IND_LATIDUDE + " = '0') AND " +
                            "      (CTM_INDICADOR.IND_LONGITUDE                   = " + IND_LONGITUDE + "  OR " + IND_LONGITUDE + " = '0') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }


        public List<ES_Indicadores> _obter_Indicadores(
                                                string CTM_INDICADOR_ID,
                                                string PAIS_ID,
                                                string ESTADO_ID,
                                                string CIDADE_ID,
                                                string IND_IATA,
                                                string IND_ICAO,
                                                string IND_DESCRICAO_LONGA,
                                                string IND_PISTA,
                                                string IND_LATIDUDE,
                                                string IND_LONGITUDE,
                                                string ORDER_BY_CLAUSE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_INDICADOR_ID)) CTM_INDICADOR_ID = "0";
            if (string.IsNullOrEmpty(PAIS_ID)) PAIS_ID = "0";
            if (string.IsNullOrEmpty(ESTADO_ID)) ESTADO_ID = "0";
            if (string.IsNullOrEmpty(CIDADE_ID)) CIDADE_ID = "0";
            if (string.IsNullOrEmpty(IND_IATA)) IND_IATA = "''"; else IND_IATA = Util.retonarAspas(IND_IATA + "%");
            if (string.IsNullOrEmpty(IND_ICAO)) IND_ICAO = "''"; else IND_ICAO = Util.retonarAspas(IND_ICAO + "%");
            if (string.IsNullOrEmpty(IND_DESCRICAO_LONGA)) IND_DESCRICAO_LONGA = "''"; else IND_DESCRICAO_LONGA = Util.retonarAspas(IND_DESCRICAO_LONGA + " % ");
            if (string.IsNullOrEmpty(IND_PISTA)) IND_PISTA = "''"; else IND_PISTA = Util.retonarAspas(IND_PISTA + "%");
            if (string.IsNullOrEmpty(IND_LATIDUDE)) IND_LATIDUDE = "0";
            if (string.IsNullOrEmpty(IND_LONGITUDE)) IND_LONGITUDE = "0";
            if (string.IsNullOrEmpty(ORDER_BY_CLAUSE)) ORDER_BY_CLAUSE = "CTM_INDICADOR.IND_IATA";

            string sql = "SELECT " +
                                  "CTM_INDICADOR.CTM_INDICADOR_ID, " +
                                  "CTM_INDICADOR.PAIS_ID, " +
                                  "PAIS.PAI_NOME_PORTUGUES, "+
                                  "CTM_INDICADOR.ESTADO_ID, " +
                                  "ESTADO.EST_NOME, "+
                                  "CTM_INDICADOR.CIDADE_ID, "+
                                  "CIDADE.CID_NOME,"+
                                  "CTM_INDICADOR.IND_IATA, " +
                                  "CTM_INDICADOR.IND_ICAO, " +
                                  "CTM_INDICADOR.IND_DESCRICAO_LONGA, " +
                                  "CTM_INDICADOR.IND_PISTA, " +
                                  "CTM_INDICADOR.IND_LATIDUDE, " +
                                  "CTM_INDICADOR.IND_LONGITUDE " +
                            "FROM CTM_INDICADOR " +
                            "LEFT JOIN ESTADO ON ESTADO.ESTADO_ID = CTM_INDICADOR.ESTADO_ID " +
                            "LEFT JOIN PAIS ON PAIS.PAIS_ID = CTM_INDICADOR.PAIS_ID " +
                            "LEFT JOIN CIDADE ON CIDADE.CIDADE_ID = CTM_INDICADOR.CIDADE_ID " +
                            "WHERE " +
                            "      (CTM_INDICADOR.CTM_INDICADOR_ID                 = " + CTM_INDICADOR_ID + "  OR " + CTM_INDICADOR_ID + " = 0) AND " +
                            "      (CTM_INDICADOR.PAIS_ID                         = " + PAIS_ID + "  OR " + PAIS_ID + " = 0) AND " +
                            "      (CTM_INDICADOR.ESTADO_ID                       = " + ESTADO_ID + "  OR " + ESTADO_ID + " = 0) AND " +
                            "      (CTM_INDICADOR.CIDADE_ID                       = " + CIDADE_ID + "  OR " + CIDADE_ID + " = 0) AND " +
                            "      (CTM_INDICADOR.IND_IATA                   LIKE " + IND_IATA.Trim() + "  OR " + IND_IATA.Trim() + " = '') AND " +
                            "      (CTM_INDICADOR.IND_ICAO                   LIKE " + IND_ICAO.Trim() + "  OR " + IND_ICAO.Trim() + " = '') AND " +
                            "      (CTM_INDICADOR.IND_DESCRICAO_LONGA        LIKE " + IND_DESCRICAO_LONGA.Trim() + "  OR " + IND_DESCRICAO_LONGA.Trim() + " = '') AND " +
                            "      (CTM_INDICADOR.IND_PISTA                       = " + IND_PISTA + "  OR " + IND_PISTA + " = '') AND " +
                            "      (CTM_INDICADOR.IND_LATIDUDE                    = " + IND_LATIDUDE + "  OR " + IND_LATIDUDE + " = 0) AND " +
                            "      (CTM_INDICADOR.IND_LONGITUDE                   = " + IND_LONGITUDE + "  OR " + IND_LONGITUDE + " = 0) "+
                            "ORDER BY "+ORDER_BY_CLAUSE;

            List<ES_Indicadores> lista = new List<ES_Indicadores>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Indicadores item = new ES_Indicadores();
                    item.CTM_INDICADOR_ID = dr["CTM_INDICADOR_ID"].ToString();
                    item.PAIS_ID = dr["PAIS_ID"].ToString();
                    item.PAI_NOME_PORTUGUES = dr["PAI_NOME_PORTUGUES"].ToString();
                    item.ESTADO_ID = dr["ESTADO_ID"].ToString();
                    item.EST_NOME = dr["EST_NOME"].ToString();
                    item.CIDADE_ID = dr["CIDADE_ID"].ToString();
                    item.CID_NOME = dr["CID_NOME"].ToString();
                    item.IND_IATA = dr["IND_IATA"].ToString();
                    item.IND_ICAO = dr["IND_ICAO"].ToString();
                    item.IND_DESCRICAO_LONGA = dr["IND_DESCRICAO_LONGA"].ToString();
                    item.IND_PISTA = dr["IND_PISTA"].ToString();
                    item.IND_LATIDUDE = dr["IND_LATIDUDE"].ToString();
                    item.IND_LONGITUDE = dr["IND_LONGITUDE"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public ES_Indicadores _obter_Indicadores_by_id(string CTM_INDICADOR_ID)
        {

            if (string.IsNullOrEmpty(CTM_INDICADOR_ID)) CTM_INDICADOR_ID = "0";

            string sql = "SELECT " +
                                  "CTM_INDICADOR.CTM_INDICADOR_ID, " +
                                  "CTM_INDICADOR.PAIS_ID, " +
                                  "CTM_INDICADOR.ESTADO_ID, " +
                                  "CTM_INDICADOR.CIDADE_ID, " +
                                  "CTM_INDICADOR.IND_IATA, " +
                                  "CTM_INDICADOR.IND_ICAO, " +
                                  "CTM_INDICADOR.IND_DESCRICAO_LONGA, " +
                                  "CTM_INDICADOR.IND_PISTA, " +
                                  "CTM_INDICADOR.IND_PISTA_COMPRIMENTO, "+
                                  "CTM_INDICADOR.IND_LATIDUDE, " +
                                  "CTM_INDICADOR.IND_LONGITUDE, " +
                                  "CTM_INDICADOR.IND_TIPO_SOSLO, " +
                                  "CTM_INDICADOR.IND_TIPO_PISTA, " +
                                  "CTM_INDICADOR.IND_ADMINISTRACAO " +
                            "FROM CTM_INDICADOR " +
                            //"LEFT JOIN ESTADO ON ESTADO.ESTADO_ID = CTM_INDICADOR.ESTADO_ID " +
                            //"LEFT JOIN PAIS ON PAIS.PAIS_ID = CTM_INDICADOR.PAIS_ID " +
                            //"LEFT JOIN CIDADE ON CIDADE.CIDADE_ID = CTM_INDICADOR.CIDADE_ID " +
                            "WHERE " +
                            "      (CTM_INDICADOR.CTM_INDICADOR_ID = " + CTM_INDICADOR_ID + ") ";

            ES_Indicadores item = new ES_Indicadores();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.CTM_INDICADOR_ID = dr["CTM_INDICADOR_ID"].ToString();
                    item.PAIS_ID = dr["PAIS_ID"].ToString();
                    //item.PAI_NOME_PORTUGUES = dr["PAI_NOME_PORTUGUES"].ToString();
                    item.ESTADO_ID = dr["ESTADO_ID"].ToString();
                    //item.EST_NOME = dr["EST_NOME"].ToString();
                    item.CIDADE_ID = dr["CIDADE_ID"].ToString();
                    //item.CID_NOME = dr["CID_NOME"].ToString();
                    item.IND_IATA = dr["IND_IATA"].ToString();
                    item.IND_ICAO = dr["IND_ICAO"].ToString();
                    item.IND_DESCRICAO_LONGA = dr["IND_DESCRICAO_LONGA"].ToString();
                    item.IND_PISTA = dr["IND_PISTA"].ToString();
                    item.IND_PISTA_COMPRIMENTO = dr["IND_PISTA_COMPRIMENTO"].ToString();
                    item.IND_LATIDUDE = dr["IND_LATIDUDE"].ToString();
                    item.IND_LONGITUDE = dr["IND_LONGITUDE"].ToString();
                    item.IND_TIPO_SOSLO = dr["IND_TIPO_SOSLO"].ToString();
                    item.IND_TIPO_PISTA = dr["IND_TIPO_PISTA"].ToString();
                    item.IND_ADMINISTRACAO = dr["IND_ADMINISTRACAO"].ToString();

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public void _inserir_Indicadores(
                                        string CTM_INDICADOR_ID,
                                        string PAIS_ID,
                                        string ESTADO_ID,
                                        string CIDADE_ID,
                                        string IND_ICAO,
                                        string IND_IATA,
                                        string IND_DESCRICAO_LONGA,
                                        string IND_PISTA,
                                        string IND_PISTA_COMPRIMENTO,
                                        string IND_LATIDUDE,
                                        string IND_LONGITUDE,
                                        string IND_TIPO_SOSLO,
                                        string IND_TIPO_PISTA,
                                        string IND_ADMINISTRACAO
                                                )
        {

            string sql = " INSERT INTO CTM_INDICADOR (" +
                         "           PAIS_ID," +
                         "           ESTADO_ID," +
                         "           CIDADE_ID," +
                         "           IND_ICAO," +
                         "           IND_IATA," +
                         "           IND_DESCRICAO_LONGA," +
                         "           IND_PISTA," +
                         "           IND_PISTA_COMPRIMENTO," +
                         "           IND_LATIDUDE," +
                         "           IND_LONGITUDE," +
                         "           IND_TIPO_SOSLO," +
                         "           IND_TIPO_PISTA," +
                         "           IND_ADMINISTRACAO" +
                 "      )" +
                 "  VALUES " +
                 "      ( " +                              
                              Util.retonarNull(PAIS_ID) + ", " +
                              Util.retonarNull(ESTADO_ID) + ", " +
                              Util.retonarNull(CIDADE_ID) + ", " +
                              Util.retonarAspas(IND_IATA, true) + ", " +
                              Util.retonarAspas(IND_ICAO, true) + ", " +
                              Util.retonarAspas(IND_DESCRICAO_LONGA, true) + ", " +
                              Util.retonarAspas(IND_PISTA, true) + ", " +
                              Util.retonarNull(IND_PISTA_COMPRIMENTO) + ", " +
                              Util.retonarNull(IND_LATIDUDE) + ", " +
                              Util.retonarNull(IND_LONGITUDE) + ", " +
                              Util.retonarAspas(IND_TIPO_SOSLO, true) + ", " +
                              Util.retonarAspas(IND_TIPO_PISTA, true) + ", " +
                              Util.retonarAspas(IND_ADMINISTRACAO, true) + 
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Indicadores(string CTM_INDICADOR_ID,
                                                string PAIS_ID,
                                                string ESTADO_ID,
                                                string CIDADE_ID,
                                                string IND_ICAO,
                                                string IND_IATA,
                                                string IND_DESCRICAO_LONGA,
                                                string IND_PISTA,
                                                string IND_PISTA_COMPRIMENTO,
                                                string IND_LATIDUDE,
                                                string IND_LONGITUDE,
                                                string IND_TIPO_SOSLO,
                                                string IND_TIPO_PISTA,
                                                string IND_ADMINISTRACAO
                                                )
        {

            string sql = " UPDATE CTM_INDICADOR SET " +
                         
                         "      PAIS_ID                         = " + Util.retonarNull(PAIS_ID) + ", " +
                         "      ESTADO_ID                       = " + Util.retonarNull(ESTADO_ID) + ", " +
                         "      CIDADE_ID                 = " + Util.retonarNull(CIDADE_ID) + ", " +
                         "      IND_IATA                   = " + Util.retonarAspas(IND_IATA, true) + ", " +
                         "      IND_ICAO                   = " + Util.retonarAspas(IND_ICAO, true) + ", " +
                         "      IND_DESCRICAO_LONGA             = " + Util.retonarAspas(IND_DESCRICAO_LONGA, true) + ", " +
                         "      IND_PISTA                       = " + Util.retonarAspas(IND_PISTA, true) + ", " +
                         "      IND_PISTA_COMPRIMENTO           = " + Util.retonarNull(IND_PISTA_COMPRIMENTO) + ", " +
                         "      IND_LATIDUDE                    = " + Util.retonarNull(IND_LATIDUDE) + ", " +
                         "      IND_LONGITUDE                   = " + Util.retonarNull(IND_LONGITUDE) + ", " +
                         "      IND_TIPO_SOSLO                   = " + Util.retonarAspas(IND_TIPO_SOSLO, true) + ", " +
                         "      IND_TIPO_PISTA                   = " + Util.retonarAspas(IND_TIPO_PISTA, true) + ", " +
                         "      IND_ADMINISTRACAO                   = " + Util.retonarAspas(IND_ADMINISTRACAO, true) +
                         " WHERE CTM_INDICADOR_ID =  " + CTM_INDICADOR_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Indicadores(string CTM_INDICADOR_ID)
        {
            string sql = "DELETE FROM CTM_INDICADOR WHERE CTM_INDICADOR_ID = " + CTM_INDICADOR_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
